package roteador;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class ListaDeRoteamento implements Iterable<DistanciaRoteador> {

    private static final long MAXIMO_CUSTO = 100;
    Map<Integer, DistanciaRoteador> vetorDistancia;
    private int idRoteador;

    public ListaDeRoteamento(int roteadorID) {
        this.idRoteador = roteadorID;
        vetorDistancia = new HashMap<Integer, DistanciaRoteador>();
        vetorDistancia.put(roteadorID, new DistanciaRoteador(
                roteadorID, 0, roteadorID));
    }

    public int getIdRoteador() {
        return idRoteador;
    }

    public DistanciaRoteador get(int idRoteador) {
        return vetorDistancia.get(idRoteador);
    }

    public void addCustoDistancia(DistanciaRoteador dr) {
        if (dr.getCusto() < MAXIMO_CUSTO) {
            vetorDistancia.put(dr.getDestino(), dr);
        } else {
            vetorDistancia.remove(dr);
        }
    }

    public int getCustoVizinho(int idRoteador) {
        DistanciaRoteador dr = vetorDistancia.get(idRoteador);
        if (dr != null) {
            return dr.getCusto();
        } else {
            return -1;
        }

    }

    public Iterator<DistanciaRoteador> iterator() {
        return vetorDistancia.values().iterator();
    }

    public int size() {
        return vetorDistancia.size();
    }

    public void remove(int destino) {
        vetorDistancia.remove(destino);

    }

    public boolean contains(int idRoteador) {
        // TODO Auto-generated method stub
        return vetorDistancia.containsKey(idRoteador);
    }
}
